// 难 要仔细琢磨

function F() {}
Object.prototype = function a() {
    console.log('a');
}
Function.prototype = function b() {
    console.log('b');
}
var f = new F();
// F 是一个空的构造函数，f 是 F 的一个实例。根据 JavaScript 的原型链机制，f 的原型链会一直向上查找，直到 Object.prototype。
// f.a();// 因为修改的是Object的原型，而他们原型上并没有a和b方法 在 Js 中，普通函数是 没有方法 的，除非显式地给它们赋值属性。
// f.a() 报错的原因是 f 的原型是函数 a()，而 a() 函数没有 a() 方法（它是一个普通的函数，而不是对象）。
 
/*以下才可行 显式地给函数赋值属性
function a() {
    console.log('a');
  }
  a.b = function() {
    console.log('b');
  };
  
  a();     // 执行普通函数 a
  a.b();   // 执行函数 a 上定义的 b 方法
  */

// f.b();// 因为修改的是Object的原型，而他们原型上并没有a和b方法


F.a();
F.b();
// 都会报错，因为向上查找 普通函数没有这些方法




